package webbrow.board.report.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import webbrow.board.component.BoardReportService;
import webbrow.board.vo.BoardReportHistoryListVO;
import webbrow.board.vo.BoardReportHistoryVO;

@Controller
public class BoardReportController {
	// Annotation 으로 boardReportService 주입
	@Resource(name="boardReportService")
	private BoardReportService service;
	
	/**
	 * detail_main.jsp 에서 새창(신고창)을 띄울 때
	 * 기본 신고 사유를 보여주기 위해 페이지 이동 전에
	 * getReportMenu()로 기본 메뉴들과 함께 이동시킨다.
	 * @return
	 */
	@RequestMapping("reportMenu.inven")
	public ModelAndView goReport(){
		return new ModelAndView("reportMenu.report", "reportMenu", service.getReportMenu());
	}
	
	/**
	 * 새창(신고창)에서 신고 사유 선택 후 신고버튼을 누르면
	 * 지금 로그인한 사용자의 아이디와 해당 글번호를 받아온다.
	 * isExistReport() 로 신고횟수가 있는지 확인 후 0 이상이면
	 * 신고 접수 실패, 아니라면 신고 내역을 insert 한다.
	 * @param hvo
	 * @return
	 */
	@RequestMapping("insertReport.inven")
	@ResponseBody	// ajax 를 위해 명시
	public String insertReport(BoardReportHistoryVO hvo){
		int count=service.isExistReport(hvo); // 신고 횟수를 변수에 저장
		String message="";
		if(count>0){ // 신고 횟수가 0 이상이라면(해당글을 신고했다면)
			message="같은 글을 중복 신고할 수 없습니다.";
		}else{ //
			message="신고접수가 완료되었습니다.";
			service.insertReport(hvo); // 신고 insert
		}		
		return message;
	}
	
	/** 관리자
	 * 클릭한 글번호의 신고 리스트 전체를 가져와 정보를 보내준다.
	 * 정보에는 글번호, 글제목, 글쓴이, 신고타입, 신고자를 포함한다. 
	 * @return
	 */
	@RequestMapping("reportSelectList.inven")
	@ResponseBody
	public List<BoardReportHistoryListVO> reportSelectList(int no) {
		List<BoardReportHistoryListVO> selectList = service.selectReportList(no);
		System.out.println("contoller select report list : "+selectList);
		return selectList;
	}
	
	/**
	 * 관리자
	 * 신고리스트 이동시 총 게시물의 글번호와 신고횟수를 반환한다.
	 * @return
	 */
	@RequestMapping("reportList.inven")
	public ModelAndView selectReportList() {
		List<BoardReportHistoryVO> list = service.selectReportCountList();
		System.out.println("controller count report list : "+list);
		return new ModelAndView("admin/report_list.admin", "list", list);
	}
	
	//////////////////////////////////////댓글신고///////////////////////////////////////
	@RequestMapping("replyReportMenu.inven")
	public ModelAndView goReplyReport(){
		return new ModelAndView("replyReportMenu.report", "reportMenu", service.getReportMenu());
	}
	
	@RequestMapping("insertReplyReport.inven")
	@ResponseBody
	public String insertReplyReport(BoardReportHistoryVO hvo){
		int count=service.isExistReplyReport(hvo); // 신고 횟수를 변수에 저장
		String message="";
		if(count>0){ // 신고 횟수가 0 이상이라면(해당글을 신고했다면)
			message="같은 글을 중복 신고할 수 없습니다.";
		}else{ //
			message="신고접수가 완료되었습니다.";
			service.insertReplyReport(hvo); // 신고 insert
		}
		return message;
	}
	
}
